//导入 axios 库
import axios from "axios";
//导入 config.ts 文件
import config from "../config";
//导入消息框
import { ElMessage } from "element-plus"; //获得 config.ts 文件导出的 baseURL 值
import { useToken } from "../stores/token";
//获取 tokenStore 对象
const tokenStore = useToken();
const baseURL = config.baseURL;
//创建 axios 对象
//注：通过相对路径设置 axios 请求地址时，baseURL 将作为请求地址的前缀
const service = axios.create({ baseURL });
//request 对象拦截器：用于处理 axios 请求对象
service.interceptors.request.use(
  //请求成功
  (config) => {
    const token = tokenStore.token;
    if (token) {
      config.headers.jwt = token;
    }
    return config;
  },
  //请求失败
  (error) => {
    //将错误向上抛，不做任何处理
    return Promise.reject(error);
  }
);
//response 对象拦截器：用于处理 axios 响应对象
service.interceptors.response.use(
  //响应成功
  (response) => {
    //返回响应对象
    return response;
  },
  //响应失败
  (_error) => {
    //通过消息框提示错误信息
    ElMessage({ type: "error", message: "网络请求失败..." });
    return Promise.resolve({});
  }
);
//导出创建的 axios 对象
export default service;
